<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <link href="../../style.css" rel="stylesheet" type="text/css">
    <title>PETSc: Documentation: Changes: 2.2.1</title>
  </head>
  <body>

    <div id="logo">
      <h1>PETSc</h1>
    </div>

    <div id="header">
      <h1><!--begin-->Documentation: Changes: 2.2.1<!--end--></h1>
    </div>

    <hr>

    <div id="sidebar">
      <ul>
        <li><a href="../../index.html">Home</a></li>
        <li><a href="../../download/index.html">Download</a></li>
        <li><a href="../../features/index.html">Features</a></li>
        <li>
          <a href="../../documentation/index.html">Documentation</a>
          <ul>
            <li><a href="../index.html">Manual pages and Users Manual</a></li>
            <li><a href="../referencing.html">Referencing PETSc</a></li>
            <li><a href="../tutorials/index.html">Tutorials</a></li>
            <li><a href="../installation.html">Installation</a></li>
            <li><a href="../saws.html">SAWs</a></li>
            <li>
              <a href="index.html">Changes</a>
              <ul>
                <li><a href="dev.html">dev</a></li>
                <li><a href="310.html">3.10</a></li>
                <li><a href="39.html">3.9</a></li>
                <li><a href="38.html">3.8</a></li>
                <li><a href="37.html">3.7</a></li>
                <li><a href="36.html">3.6</a></li>
                <li><a href="35.html">3.5</a></li>
                <li><a href="34.html">3.4</a></li>
                <li><a href="33.html">3.3</a></li>
                <li><a href="32.html">3.2</a></li>
                <li><a href="31.html">3.1</a></li>
                <li><a href="300.html">3.0.0</a></li>
                <li><a href="233.html">2.3.3</a></li>
                <li><a href="232.html">2.3.2</a></li>
                <li><a href="231.html">2.3.1</a></li>
                <li><a href="230.html">2.3.0</a></li>
                <li><span class="current">2.2.1</span></li>
                <li><a href="220.html">2.2.0</a></li>
                <li><a href="216.html">2.1.6</a></li>
                <li><a href="215.html">2.1.5</a></li>
                <li><a href="213.html">2.1.3</a></li>
                <li><a href="212.html">2.1.2</a></li>
                <li><a href="211.html">2.1.1</a></li>
                <li><a href="21.html">2.1.0</a></li>
                <li><a href="2029.html">2.0.29</a></li>
                <li><a href="2028.html">2.0.28</a></li>
                <li><a href="2024.html">2.0.24</a></li>
                <li><a href="2022.html">2.0.22</a></li>
                <li><a href="2018-21.html">2.0.18-21</a></li>
                <li><a href="2017.html">2.0.17</a></li>
                <li><a href="2016.html">2.0.16</a></li>
                <li><a href="2015.html">2.0.15</a></li>
              </ul>
            </li>
            <li><a href="../bugreporting.html">Bug Reporting</a></li>
            <li><a href="../codemanagement.html">Code Management</a></li>
            <li><a href="../faq.html">FAQ</a></li>
            <li><a href="../license.html">License</a></li>
            <li><a href="../linearsolvertable.html">Linear Solver Table</a></li>
          </ul>
        </li>
        <li><a href="../../publications/index.html">Applications/Publications</a></li>
        <li><a href="../../miscellaneous/index.html">Miscellaneous</a></li>
        <li><a href="../../miscellaneous/external.html">External Software</a></li>
        <li><a href="../../developers/index.html">Developers Site</a></li>
      </ul>
    </div>

    <!--begin-->

    <style type="text/css">
      h2 {
        color: red;
      }

      h4 {
        font-weight: bold;
        text-decoration: underline;
      }
    </style>

    <div id="main">

      <div align="center">
        <h2><a name="CHANGES">CHANGES in PETSc 2.2.1</a></h2>
      </div>

      <h4>General:</h4>

      <ul>
        <li>
          Introduced 4 new PETSc data types: PetscInt, PetscErrorCode,
          PetscMPIInt and PetscBLASInt. For 99% of users these are just int or
          integer*4 and you do <b>not</b> need to change your code.
        </li>

        <li>
          For users with more than roughly 2 billion unknowns you can run
          configure with --with-64-bit-ints and then PetscInt will represent 64
          bit integers, long long int in C and integer*8 in Fortran. But the
          the other 3 types remain 32 bit (i.e. int in C and integer*4 in
          Fortran). Now you can index into vectors and matrices with virtually
          unlimited sizes.
        </li>
      </ul>

      <h4>Vec:</h4>

      <ul>
        <li>VecSetStashInitialSize() -&gt; VecStashSetInitialSize()</li>

        <li>
          VecConvertMPIToAll() and VecConvertMPIToZero() have been replaced
          with VecScatterCreateToAll() and VecScatterCreateToZero()
        </li>
      </ul>

      <h4>IS:</h4>

      <ul>
        <li>ISSum() now has a throughput argument instead of one in and one output.</li>
      </ul>

      <h4>Mat:</h4>

      <ul>
        <li>MatSetStashInitialSize() -&gt; MatStashSetInitialSize()</li>
        <li>added MatFactorInfoInitialize()</li>
        <li>added MatStashGetInfo()</li>
        <li>added MatGetVecs()</li>

        <li>
          added MatIsSymmetric(), MatIsTranspose() now take a tolerance flag
          for equality (use 0.0 for identical)
        </li>

        <li>added MatMPIAIJSetPreallocationCSR() and MatMPIBAIJSetPreallocationCSR()</li>
      </ul>

      <h4>PC:</h4>

      <ul>
        <li>ICC now uses Manteuffel shift by default</li>

        <li>
          If matrix is symmetric, PC defaults to ICC when possible, if you told
          with MatSetOption(mat,MAT_SYMMETRIC)
        </li>

        <li>PCSetVector() is gone (no longer needed)</li>
        <li>PCNullSpaceAttach() is gone, use KSPSetNullSpace()</li>
        <li>MatGetSubmatrices() now preserves symmetric flag of original matrix</li>

        <li>
          hypre BoomerAMG (-pc_type hypre -pc_hypre_type boomeramg) now uses
          one 1 cycle of multigrid as preconditioner (Previously it used either
          a decrease in residual of 10^-7 or a maximum of 20 iterations
        </li>
      </ul>

      <h4>KSP:</h4>

      <ul>
        <li>
          Note that a relative residual tolerance now means that ||r_k|| &lt;
          tol*||b||</li> <li> Removed KSPSetRhs() and KSPSetSolution(), pass
        </li>

        <li>Added KSPSetNullSpace(), KSPGetNullSpace()</li>
      </ul>

      <h4>DA:</h4>

      <ul>
        <li>Added DAGetGhostedCoordinates() and DAGetCoordinateDA() (see src/dm/da/examples/tutorials/ex3.c)</li>
        <li>Added DACoor2d and DACoor3d (see src/dm/da/examples/tutorials/ex3.c)</li>

        <li>
          DAGetInterpolation() now provides the correct interpolation for
          nonuniform grids using the coordinate information provided with
          DASetCoordinates(). (see src/dm/da/examples/tutorials/ex3.c)
        </li>
      </ul>

      <h4>config/configure.py:</h4>

      <ul>
        <li>--with-c/f-blas-lapack -&gt; --download-c/f-blas-lapack=yes</li>
        <li>--with-c/f-blas-lapack-if-needed -&gt; --download-c/f-blas-lapack=ifneeded</li>
        <li>added --download-mpich=yes,no,ifneeded</li>
        <li>added --download-mpich-device=</li>
        <li>added --download-mpich-machines=[machines]</li>
        <li>added configure including download support for hypre, parmetis</li>
        <li>added configure support (without download) to Mumps, UMF, Superlu,SuperLU_dist,DSCPACK</li>
        <li>Made configure much more robust</li>
      </ul>

      <h4>SNES:</h4>

      <ul>
        <li>Added -snes_converged_reason</li>
        <li>Added SNESSetRhs(snes,rhs) to allow for solving F(x) = rhs</li>
      </ul>

      <h4>TS:</h4>

      <h4>DMMG:</h4>

      <ul>
        <li>Added DMMGSetNullSpace()</li>
      </ul>

      <h4>SYS:</h4>
      <h4>Fortran:</h4>
      <h4>ExternalPackages:</h4>

    </div>

    <!--end-->

    <hr>

  </body>
</html>
